package com.plm.maque.service;

import com.plm.maque.entity.ImageInfo;
import com.plm.maque.entity.User;
import org.springframework.http.ResponseEntity;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

/**
 * @author Limi
 * @create 2019-04-21 15:27
 */
public interface ImageService {
    /**
     * 上传图片
     */
    ImageInfo uploadImage(HttpServletRequest request, User user);

    /**
     * 获取图片
     * @param id 表记录的主键id
     */
    void getImage(String id, HttpServletRequest request, HttpServletResponse response) throws IOException;

    /**
     * 根据id获取响应的byte数组
     * @param id 主键
     * @return 响应实体的字节流数组
     */
    ResponseEntity<byte[]> getImage(String id);

    /**
     * 查询图片、文件夹信息
     */
    List<ImageInfo> query(ImageInfo imageInfo, User user);

    /**
     * 删除图片，实际上是把状态改为无效
     */
    void delete(ImageInfo imageInfo, User user);

    /**
     * 根据文件夹id查询图片信息
     * @param directoryId 文件夹id
     * @param user 当前登录人
     */
    List<ImageInfo> queryByDirectoryId(String directoryId, User user);

    /**
     * 根据主键id选择性更新不为空的字段
     */
    void updateByPrimaryKeySelective(ImageInfo imageInfo, User user);

    /**
     * 上传页面缩略图专用
     * @return 表中主键id
     */
    String uploadThumbnail(HttpServletRequest request, User user);
}
